from django_redis import get_redis_connection
from utils import hmjson


def merge_cart_cookie2redis(request, response, user_id):
    '''
    读取cookie中的购物车数据,保存到Redis中
    :param request: 用于读取cookie中的购物车数据
    :param response: 合并完成后,删除cookie中的购物车数据
    :return: response
    '''
    # 读取cookie
    cart = request.COOKIES.get('cart')
    if not cart:
        return response
    cart_dict = hmjson.loads(cart)

    # 写redis
    redis_cli = get_redis_connection('cart')
    # 遍历cookie中购物车字典,值是一个小字典
    for sku_id, item in cart_dict.items():
        # 将数量保存到hash中
        # request.user===>获取当前登录的用户
        # 当前函数会在登录时执行,此时登录还没有完成,所以request对象中并没有user属性
        redis_cli.hset('cart%d' % user_id, sku_id, item.get('count'))
        # 将选中状态保存到set中
        if item.get('selected'):
            redis_cli.sadd('cart_selected%d' % user_id, sku_id)
        else:
            redis_cli.srem('cart_selected%d' % user_id, sku_id)
    # 删cookie
    response.delete_cookie('cart')

    # 响应
    return response
